<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../style.css" type="text/css" media="screen">
<link rel="stylesheet" href="../../print.css" type="text/css" media="print">
<meta content="ClassFactory,mx.core.ClassFactory,generator,properties,newInstance" name="keywords">
<title>mx.core.ClassFactory</title>
</head>
<body>
<script type="text/javascript" language="javascript" src="../../asdoc.js"></script><script type="text/javascript" language="javascript" src="../../cookies.js"></script><script type="text/javascript" language="javascript">
<!--
				asdocTitle = 'ClassFactory - API Documentation';
				var baseRef = '../../';
				window.onload = configPage;
			--></script>
<table style="display:none" id="titleTable" cellspacing="0" cellpadding="0" class="titleTable">
<tr>
<td align="left" class="titleTableTitle">API Documentation</td><td align="right" class="titleTableTopNav"><a onclick="loadClassListFrame('../../all-classes.html')" href="../../package-summary.html">All&nbsp;Packages</a>&nbsp;|&nbsp;<a onclick="loadClassListFrame('../../all-classes.html')" href="../../class-summary.html">All&nbsp;Classes</a>&nbsp;|&nbsp;<a onclick="loadClassListFrame('../../index-list.html')" href="../../all-index-A.html">Index</a>&nbsp;|&nbsp;<a href="../../index.html?mx/core/ClassFactory.html&amp;mx/core/class-list.html" id="framesLink1">Frames</a><a onclick="parent.location=document.location" href="" style="display:none" id="noFramesLink1">No&nbsp;Frames</a></td><td rowspan="3" align="right" class="titleTableLogo"><img alt="Adobe Logo" title="Adobe Logo" class="logoImage" src="../../images/logo.jpg"></td>
</tr>
<tr class="titleTableRow2">
<td align="left" id="subTitle" class="titleTableSubTitle">Class&nbsp;ClassFactory</td><td align="right" id="subNav" class="titleTableSubNav"><a href="#propertySummary">Properties</a>&nbsp;| <a href="#methodSummary">Methods</a></td>
</tr>
<tr class="titleTableRow3">
<td colspan="2">&nbsp;</td>
</tr>
</table>
<script type="text/javascript" language="javascript">
<!--
if (!isEclipse() || window.name != ECLIPSE_FRAME_NAME) {titleBar_setSubTitle("Class ClassFactory"); titleBar_setSubNav(false,true,false,false,false,false,true,false,false,false,false,false,false,false);}
--></script>
<div class="MainContent">
<table cellspacing="0" cellpadding="0" class="classHeaderTable">
<tr>
<td class="classHeaderTableLabel">Package</td><td><a onclick="javascript:loadClassListFrame('class-list.html')" href="package-detail.html">mx.core</a></td>
</tr>
<tr>
<td class="classHeaderTableLabel">Class</td><td class="classSignature">public class ClassFactory</td>
</tr>
<tr>
<td class="classHeaderTableLabel">Implements</td><td><a href="IFactory.html">IFactory</a></td>
</tr>
<tr>
<td class="classHeaderTableLabel">Subclasses</td><td><a href="../../as3isolib/core/ClassFactory.html">ClassFactory</a></td>
</tr>
</table>
<p></p>
  A ClassFactory instance is a "factory object" which Flex uses
  to generate instances of another class, each with identical properties.
   <p>You specify a <code>generator</code> class when you construct
  the factory object.
  Then you set the <code>properties</code> property on the factory object.
  Flex uses the factory object to generate instances by calling
  the factory object's <code>newInstance()</code> method.</p>
   <p>The <code>newInstance()</code> method creates a new instance
  of the <code>generator</code> class, and sets the properties specified
  by <code>properties</code> in the new instance.
  If you need to further customize the generated instances,
  you can override the <code>newInstance()</code> method.</p>
   <p>The ClassFactory class implements the IFactory interface.
  Therefore it lets you create objects that can be assigned to properties 
  of type IFactory, such as the <code>itemRenderer</code> property of a List control
  or the <code>itemEditor</code> property of a DataGrid control.</p>
   <p>For example, suppose you write an item renderer class named 
  ProductRenderer containing
  a <code>showProductImage</code> property which can be <code>true</code>
  or <code>false</code>.
  If you want to make a List control use this renderer, and have each renderer
  instance display a product image, you would write the following code:</p>
   <pre>
  var productRenderer:ClassFactory = new ClassFactory(ProductRenderer);
  productRenderer.properties = { showProductImage: true };
  myList.itemRenderer = productRenderer;</pre>
   <p>The List control calls the <code>newInstance()</code> method on the
  <code>itemRenderer</code> to create individual instances of ProductRenderer,
  each with <code>showProductImage</code> property set to <code>true</code>.
  If you want a different List control to omit the product images, you use
  the ProductRenderer class to create another ClassFactory
  with the <code>properties</code> property set to
  <code>{ showProductImage: false }</code>.</p>
   <p>Using the <code>properties</code> property to configure the instances
  can be powerful, since it allows a single generator class to be used
  in different ways.
  However, it is very common to create non-configurable generator classes
  which require no properties to be set.
  For this reason, MXML lets you use the following syntax: </p>
   <pre>
  &lt;mx:List id="myList" itemRenderer="ProductRenderer"&gt;</pre>
   <p>The MXML compiler automatically creates the ClassFactory instance
  for you.</p>
   <p></p>
<p>
<span class="classHeaderTableLabel">See also</span>
</p>
<div class="seeAlso">
<a href="../core/IFactory.html" target="">mx.core.IFactory</a>
<br>mx.controls.List</div>
<br>
<hr>
</div>
<a name="propertySummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Public Properties</div>
<table id="summaryTableProperty" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Property</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#generator">generator</a> : Class<div class="summaryTableDescription">
      The Class that the <code>newInstance()</code> method uses
   to generate objects from this factory object.</div>
</td><td class="summaryTableOwnerCol">ClassFactory</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#properties">properties</a> : Object = null<div class="summaryTableDescription">
  An Object whose name/value pairs specify the properties to be set
   on each object generated by the <code>newInstance()</code> method.</div>
</td><td class="summaryTableOwnerCol">ClassFactory</td>
</tr>
</table>
</div>
<a name="methodSummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Public Methods</div>
<table id="summaryTableMethod" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#ClassFactory()">ClassFactory</a>(generator:Class = null)</div>
<div class="summaryTableDescription">
      Constructor.</div>
</td><td class="summaryTableOwnerCol">ClassFactory</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#newInstance()">newInstance</a>():*</div>
<div class="summaryTableDescription">
   Creates a new instance of the <code>generator</code> class,
   with the properties specified by <code>properties</code>.</div>
</td><td class="summaryTableOwnerCol">ClassFactory</td>
</tr>
</table>
</div>
<script type="text/javascript" language="javascript">
<!--
showHideInherited();
--></script>
<div class="MainContent">
<a name="propertyDetail"></a>
<div class="detailSectionHeader">Property detail</div>
<a name="generator"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">generator</td><td class="detailHeaderType">property</td>
</tr>
</table>
<div class="detailBody">
<code>public var generator:Class</code><p>
      The Class that the <code>newInstance()</code> method uses
   to generate objects from this factory object.
     </p></div>
<a name="properties"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">properties</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public var properties:Object = null</code><p>
  An Object whose name/value pairs specify the properties to be set
   on each object generated by the <code>newInstance()</code> method.
     </p><p>For example, if you set <code>properties</code> to
   <code>{ text: "Hello", width: 100 }</code>, then every instance
   of the <code>generator</code> class that is generated by calling
   <code>newInstance()</code> will have its <code>text</code> set to
   <code>"Hello"</code> and its <code>width</code> set to
   <code>100</code>.</p>
     <p>The default value is <code>null</code>.</p>
</div>
<a name="constructorDetail"></a>
<div class="detailSectionHeader">Constructor detail</div>
<a name="ClassFactory()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">ClassFactory</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">constructor</td>
</tr>
</table>
<div class="detailBody">
<code>public function ClassFactory(generator:Class = null)</code><p>
      Constructor.
           </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">generator</span>:Class</code> (default = <code>null</code>)<code></code> &mdash; The Class that the <code>newInstance()</code> method uses
   to generate objects from this factory object.
     </td>
</tr>
</table>
</div>
<a name="methodDetail"></a>
<div class="detailSectionHeader">Method detail</div>
<a name="newInstance()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">newInstance</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td>
</tr>
</table>
<div class="detailBody">
<code>public function newInstance():*</code><p>
   Creates a new instance of the <code>generator</code> class,
   with the properties specified by <code>properties</code>.
     </p><p>This method implements the <code>newInstance()</code> method
   of the IFactory interface.</p>
     <p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>*</code> &mdash; The new instance that was created.
  </td>
</tr>
</table>
</div>
<br>
<br>
<hr>
<br>
<p></p>
<center class="copyright"> 
</center>
</div>
</body>
</html>
<!-- -->
